e-mail: pgmjsd@yahoo.com or joshua_davis@mindspring.com
web: http://joshua_davis.home.mindspring.com
Leadership position in software development
12/2003 – Present : Hibernate (JBoss, Inc.)
Participated in the development of an Object/Relational Mapping system called Hibernate. The main objective was to refactor the existing Hibernate Query Language parser into an AST-based system, which was a good fit for my existing compiler and parser design experience. When completed, this effort allowed the Hibernate team to influence the EJB3 specification and build the first EJB3 persistence manger..
Introduced ANTLR as a parser, AST generator, and AST processor.
Used a three phase compiler design to translate HQL into SQL.
6/2001 – Present : Kiodex, Inc., New York, NY
Kiodex Architect
Responsible for the software architecture and design of the Kiodex Risk Workbench application, including both the J2EE and financial modeling components. (J2EE – JSP/EJB/JMS, XML/XSL, SOAP, Weblogic, ORACLE, Hibernate3, Apache Web server). Also initiated and developed an internal J2EE application for the market data business using all Open Source technology (JBoss, Struts, Hibernate, MySQL and SQL Server).
Introduced Extreme Programming. A development methodology was needed, and XP fits well with the existing project management process.
Responsible for software team growth including designing the interview process and selecting candidates.
‘Hands on’ Software Architect: Responsible for design and implementation of shared frameworks and interfaces between components, as well as application features.
Responsible for improving the development tools and environment to increase the efficiency of application development and maintenance. New technologies introduced included: Hibernate, JBoss, XDoclet, Struts, Spring, Axis and many others.
Introduced new tools for the company and for the development team, including new IDE (IDEA), a web based bug tracking system (JIRA), a project tracking system, and a Wiki for collaboration across the company. Replaced ClearCase with Subversion to save money and allow remote development.
Introduced an Open Source unit testing framework (JUnit), a logging framework (Log4J), and several extensions to the build process (ANT) that provided style checking, software metrics, and reduced build times.
Designed a report execution framework that separated the financial modeling code fully from the J2EE environment. This solved some scalability issues and allowed the production to service more customers reliably using inexpensive hardware. This framework evolved into a grid computing framework which supports distributed parallel execution of financial algorithms (Monte Carlo analysis).
Designed, developed and documented the XML API specification for the Kiodex Risk Workbench. Designed and developed and extensible, server-side infrastructure to support the exchange of trades and market data with the application. This infrastructure for this was leveraged to enable:
A web service / SOAP API, which is used by many Kiodex customers.
Excel clients for Kiodex users.
Financial model testing with ‘live’ data.
An integration with LIM for redistributing the Kiodex Global Data series.
12/1999 – 6/2001 : Metiom, New York, NY
Lead Software Architect – Global Architecture Group
Responsible for cross-product infrastructure code and design for the entire ConnectTrade product line (EJB, JDBC, JMS, JAXP, Weblogic, SQL Server, ORACLE).
Developed an asynchronous messaging system that allows ConnectTrade applications to exchange business documents with peers using modular transports and transforms. Saved approximately $1M in third party license fees (JMS, JAXP, JSSE, JCE, OBI/EDI).
Responsible for educating and mentoring junior, mid-level, and senior developers on EJB, Servlets, OOP / OOD, and server-side considerations. This included developing coding standards and promoting the adoption of a commercial software development process.
Developed, documented, and published the XML API specification for ConnectTrade.
Implemented an open-source based software development infrastructure using CVS, ANT, Linux and Perl.
Initiated an intranet web for developers at Metiom to promote technical education throughout the company.
Developed an architecture for gathering and searching catalog content called Virtual Aggregation™ (Java, XML, Vingette, IntuiFind, WebLogic, SQL Server). Provided business case analysis and implemented initial prototypes including an initial search application. Created patent documentation for Virtual Aggregation™ technology.
Refined and developed architecture for B2B catalog search site (IIS, MTS, SQL Server, COM, VB, ASP, WebMethods, Vingette, Java, C++, COM, ATL)
Produced architecture and design / implementation guideline documents for the current generation of ConnectTrade products (Rational Rose UML, FrontPage, Visio).
Researched new technologies for use in the ConnectTrade series of products.
1996 - 12/1999 : Information Builders, Inc., New York, NY
Chief Architect and Team Leader – Application Development Technology Division
Initiated the design and development of a new Application Development Environment for the company’s proprietary 4GL. (VC++, Windows, MFC)
Implemented a prototype as proof of concept.
Introduced new concepts into the environment to allow users to develop and deliver more complex applications.
Designed a semantic network class library with a companion GUI library for visualization and editing of complex 4GL applications.
Lead the initial, five member design team in producing the general specifications.
Designed and implemented COM interface to the semantic network library for external integration and automation.
Final production team of eight developers delivered the first version.
Designed and implemented a network client for RPC / FTP operations as a dynamically loadable pseudo-component with well defined interfaces. Replaced the existing 4GL engine client with the new layer. Implemented a COM wrapper for the development environment for automatic application component distribution (multi-platform C, sockets, VC++, ATL)
Designed and implemented the Scalable Server Architecture around the 4GL engine. (multi-platform C)
Researched, designed and implemented advanced 4GL features such as type introspection, dynamic objects, and automatic code distribution.
Implemented COM wrapper around the 4GL engine. (VC++, ATL)
Developed tools 4GL engine development: regression testing, source control synchronization, DevStudio build synchronization. (Perl, VSS, DevStudio, NT)
Development and maintenance of internal web sites for 4GL engine internals and technical documentation. (FrontPage 2000)
Research projects:
4GL engine as an ActiveScript server (VC++, ATL, COM, InternetSDK).
Scalable Server Architecture using DCOM (instead of proprietary middleware).
Multi-threading 4GL engine.
Portability of the 4GL engine to Windows CE.
XML-driven RPC
1992 – 1996 : Information Builders, Inc., New York, NY
Senior Programmer – Central Programming Division
Core member of an elite team selected to develop a new 4GL engine. (Compiler and interpreter design)
Major participant in the initial design discussions, which involved specifying the overall parsing, compilation, and pseudo-machine behaviors.
Designed and implemented object oriented grammar and expression grammar.
Implemented assignment, expression and flow-of-control statement compilation.
Designed and implemented pseudo-machine interpreter to execute the code images produced by the compiler.
Implemented portable C data structure library for the parsing engine, and the 4GL compiler / interpreter.
Assisted in the development and debugging of the table driven language parsing engine. (multi-platform C)
Major participant in the development of multi-platform C standards. The 4GL engine now runs on more than 20 different operating systems.
Multi-platform C portability projects:
Development using Watcom C / DOS, C Set/2 / OS/2, Turbo C++ / DOS simultaneously to immediately detect compilation problems.
Initial target: SASC / VM-CMS / MVS. Other targets of the multi-platform build system included Solaris, HP-UX.
Multi-platform C code for the 4GL engine was the first (and only) IBI code to run successfully on the Macintosh.
1990 – 1992 : Information Builders, Inc., New York, NY
Programmer – FOCUS Application Development Tool
Developed visual editor for the company’s proprietary DDL using the VSF CASE framework. (VSF, OS/2)
Developed a parser for the DDL using LALR and the parsing engine. Assisted in the testing and development of the parsing engine technology (C Set / 2, OS/2, LR(1) shift reduce parsing).
Attended two week course in VSF programming.
Attended IBI 'Top Gun' courses.
1987 – 1990 : David Sarnoff Research Center, Princeton, NJ
Programmer – CAD System Services
Lead programmer for custom CAD library development. Implemented portable CAD file access library and data structure library in C++. Responsibilities included requirements discussions with clients, design, coding, and documentation. System features included version control and part catalog / assembly list checking. (C++, C, x86 Assembly, Ingres/SQL, VAX/VMS, DOS)
Developed and delivered a one hour lecture about the custom CAD library for the Midwest CAD / CAE conference.
Instructed and designed a C++ programming course for DSRC staff.
Attended C++ programming seminar with keynote speakers Bjarne Stroustrup and Andrew Koenig.
1985 – 1987 : Response Analysis, Princeton, NJ
Programmer
Developed custom survey tracking system. Design goals included efficient use of terminal I/O and CPU resources. (Ultimate Basic, PICK)
Card punch data conversion and data entry systems. Programs converted data to and from various 'card punch binary' formats. Data entry program simulated the card punch machine to reduce the user's learning curve. (TurboPascal, DOS)
1983 – 1987 : Pratt Institute, Brooklyn, NY
Bachelor of Science Computer Science
Graduated with Honors
Projects included: Image processing system (Pascal, VAX/VMS), Circuit Analysis program (C, UNIX), Equation evaluator (TurboPascal, DOS), AI programs written in Flavors and CLOS.
Software and Hardware
Java Environments:
J2EE (JNDI, EJB, JMS, JSP, Servlets, JDBC), JCE, JAXP (XSLT, XML DOM & SAX), XSL, Hibernate, Weblogic Application Server, JBoss, Tomcat, Netscape Enterprise Server, Struts
Newer technologies: JSF, JBoss Seam, EJB3
Primary working environments:
Java: IDEA, Eclipse, JBuilder
Databases: ORACLE, SQL Server, MySQL, HSQLDB, Focus
C/C++: VC++, ATL, MFC, SASC
Operating systems: Linux, Solaris, Windows NT / 2000, Cygwin, VM/CMS
Other: Subversion, ClearCase, CVS, ANT , Perl, SourceSafe, Apache Web Server
Secondary environments: HP-UX, VAX/VMS, Unixware
Portable code environments: NT/95/98, over 10 versions of UNIX, VM/CMS, MVS, VMS, OS/2, OS/400 (even 16 bit Windows!)
Expertise and Interests
Object oriented design, Artificial Intelligence
Software Engineering and Architecture
Language and Compiler design
C and C++ portability